// 定义校验规则提供给vee-validate组件使用
import { userCheckAccount } from '@/api/user'
export default {
  // 校验account
  account (value) {
    // value是将来使用改规则的表单元素的值
    if (!value) return '请输入用户名'
    // 规则 字母开头 6-20字符之间
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) {
      return '字母开头且6-20个字符'
    }
    return true
  },
  // 重写一个用户名校验其唯一性
  async accountApi (value) {
    // value是将来使用改规则的表单元素的值
    if (!value) return '请输入用户名'
    // 规则 字母开头 6-20字符之间
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) {
      return '字母开头且6-20个字符'
    }
    // 服务器端校验
    const data = await userCheckAccount(value)
    // console.log(data)?
    if (data.result.valid) {
      return '用户名已存在'
    }
    return true
  },
  // 密码校验
  password (value) {
    if (!value) return '请输入密码'
    if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
    return true
  },
  // 确认密码校验
  rePassword (value, { form }) {
    if (!value) return '请输入密码'
    if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
    // form 是表单数据对象
    if (value !== form.password) return '两次密码输入不一致'
    return true
  },
  mobile (value) {
    if (!value) return '请输入手机号'
    if (!/^1[3-9]\d{9}$/.test(value)) return '手机号格式错误'
    return true
  },
  code (value) {
    if (!value) return '请输入验证码'
    if (!/^\d{6}$/.test(value)) return '验证码是6个数字'
    return true
  },
  isAgree (value) {
    if (!value) return '请勾选同意用户协议'
    return true
  }
}
